package com.gitee.qdbp.general.common.biz.oplog.dao;

import java.util.List;
import com.gitee.qdbp.able.jdbc.paging.Paging;
import com.gitee.qdbp.base.annotation.OperateTraces;
import com.gitee.qdbp.base.controlling.OperateTracesBean;
import com.gitee.qdbp.base.model.condition.OrderWhere;
import com.gitee.qdbp.base.model.condition.Where;
import com.gitee.qdbp.general.common.api.oplog.model.OperateTracesUpdate;
import com.gitee.qdbp.general.common.api.oplog.model.OperateTracesWhere;

/**
 * 操作记录明细DAO
 *
 * @author zhh
 * @version 170705
 */
@OperateTraces(enable = false)
public interface IOperateTracesBasicDao {

    /**
     * 按条件查询单个对象,一般是根据ID或CODE查询
     *
     * @param where 查询条件
     * @return 操作记录明细
     */
    OperateTracesBean find(Where<OperateTracesWhere> where);

    /**
     * 按条件查询
     *
     * @param where 查询条件
     * @param paging 分页条件
     * @return 操作记录明细列表
     */
    List<OperateTracesBean> list(OrderWhere<OperateTracesWhere> where, Paging paging);

    /**
     * 创建操作记录明细记录
     *
     * @param model 操作记录明细信息
     * @return 影响行数
     */
    int insert(OperateTracesBean model);

    /**
     * 批量创建操作记录明细记录
     *
     * @param model 操作记录明细信息
     * @return 影响行数
     */
    int inserts(List<OperateTracesBean> models);

    /**
     * 按条件修改操作记录明细
     *
     * @param model 操作记录明细信息
     * @return 影响行数
     */
    int update(OperateTracesUpdate model);

    /**
     * 按条件删除操作记录明细
     *
     * @param condition 条件
     * @return 影响行数
     */
    int delete(Where<OperateTracesWhere> condition);
}
